#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project ：Employment_class 
@File    ：04_线程共享全局变量的问题.py
@IDE     ：PyCharm 
@Author  ：XiaoDengYa
@Date    ：2021/6/8/008 20:42 
"""

"""
假设两个线程t1和t2都要对全局变量g_num(默认是0)进行加1运算，t1和t2都各对g_num加10次，g_num的最终的结果应该为20。

但是由于是多线程同时操作，有可能出现下面情况：

在g_num=0时，t1取得g_num=0。此时系统把t1调度为”sleeping”状态，把t2转换为”running”状态，t2也获得g_num=0
然后t2对得到的值进行加1并赋给g_num，使得g_num=1
然后系统又把t2调度为”sleeping”，把t1转为”running”。线程t1又把它之前得到的0加1后赋值给g_num。
这样导致虽然t1和t2都对g_num加1，但结果仍然是g_num=1
"""


# import time
# from threading import*
# #定义全局变量num
# num = 0
# def dtest1():
#     global num
#     for i in range(100000): # 当数据量过大，则会导致写入不及时，下面的线程等不到修改完成
#         num+=1
#     print('test1输出num:',num)
#
# def dtest2():
#     global num
#     for i in range(100000):
#         num+=1
#     print('test2输出num:',num)
#
# if __name__=='__main__':
#     t1 = Thread(target=dtest1)
#     t2 = Thread(target=dtest2)
#     t1.start()
#     t2.start()
#     t1.join()
#     t2.join()

# from threading import Thread
# import time
#
# g_num = 0
#
# def dtest1():
#     global g_num
#     for i in range(1000000):
#         g_num += 1
#
#     print("---test1---g_num=%d"%g_num)
#
# def dtest2():
#     global g_num
#     for i in range(1000000):
#         g_num += 1
#
#     print("---test2---g_num=%d"%g_num)
#
#
# p1 = Thread(target=dtest1)
# p1.start()
#
# # time.sleep(3) #取消屏蔽之后 再次运行程序，结果会不一样，，，为啥呢？
#
# p2 = Thread(target=dtest2)
# p2.start()
#
# print("---g_num=%d---"%g_num)

# list = [11,22,5,4,1,22,5]
# new_list = []
# for i in list:
#     if i not in new_list:
#         new_list.append(i)
# print(new_list)
